Bibliographic Collection

Data source: Clarivate Analytics Web of Science (http://apps.webofknowledge.com)

Data format: Plaintext

Query: SO = “Journal of Informetrics”

Timespan: 2007-2017

Document Type: Articles, letters, review and proceedings papers

Query data: May, 2018

Install and load bibliometrix R-package

# Stable version from CRAN (Comprehensive R Archive Network)
# if you need to execute the code, remove # from the beginning of the next line

# install.packages("bibliometrix")


# Most updated version from GitHub
# if you need to execute the code, remove # from the beginning of the next lines

# install.packages("devtools")
# devtools::install_github("massimoaria/bibliometrix")

library(bibliometrix)

Data Loading and Converting


myfile <- ("jfe_to_bibliometrix.txt")

# Converting the loaded files into a R bibliographic dataframe
M <- convert2df(file=myfile, dbsource="wos",format="plaintext")

Converting your wos collection into a bibliographic dataframe

Done!


Generating affiliation field tag AU_UN from C1:  Done!

Section 1: Descriptive Analysis

Descriptive analysis provides some snapshots about the annual research development, the top “k” productive authors, papers, countries and most relevant keywords.

Main findings about the collection

#options(width=160)
results <- biblioAnalysis(M)
summary(results, k=10, pause=F, width=130)


MAIN INFORMATION ABOUT DATA

 Timespan                              1980 : 2022 
 Sources (Journals, Books, etc)        1 
 Documents                             3211 
 Average years from publication        14.5 
 Average citations per documents       131.3 
 Average citations per year per doc    7.883 
 References                            53200 
 
DOCUMENT TYPES                     
 article                         3082 
 article; proceedings paper      66 
 biographical-item               1 
 correction                      9 
 correction, addition            2 
 editorial material              45 
 letter                          1 
 note                            2 
 review                          3 
 
DOCUMENT CONTENTS
 Keywords Plus (ID)                    2758 
 Author's Keywords (DE)                5116 
 
AUTHORS
 Authors                               3804 
 Author Appearances                    7470 
 Authors of single-authored documents  518 
 Authors of multi-authored documents   3286 
 
AUTHORS COLLABORATION
 Single-authored documents             635 
 Documents per Author                  0.844 
 Authors per Document                  1.18 
 Co-Authors per Documents              2.33 
 Collaboration Index                   1.28 
 

Annual Scientific Production

Annual Percentage Growth Rate 4.043931 


Most Productive Authors


Top manuscripts per citations


Corresponding Author's Countries


SCP: Single Country Publications

MCP: Multiple Country Publications


Total Citations per Country


Most Relevant Sources


Most Relevant Keywords
plot(x=results, k=10, pause=F)

Most Cited References

CR <- citations(M, field = "article", sep = ";")
cbind(CR$Cited[1:20])
                                                                              [,1]
FAMA EF, 1993, J FINANC ECON, V33, P3, DOI 10.1016/0304-405X(93)90023-5        355
FAMA EF, 1973, J POLIT ECON, V81, P607, DOI 10.1086/260061                     291
JENSEN MC, 1976, J FINANC ECON, V3, P305, DOI 10.1016/0304-405X(76)90026-X     272
JENSEN MC, 1986, AM ECON REV, V76, P323                                        239
NEWEY WK, 1987, ECONOMETRICA, V55, P703, DOI 10.2307/1913610                   223
CARHART MM, 1997, J FINANC, V52, P57, DOI 10.2307/2329556                      220
FAMA EF, 1992, J FINANC, V47, P427, DOI 10.2307/2329112                        212
WHITE H, 1980, ECONOMETRICA, V48, P817, DOI 10.2307/1912934                    187
AMIHUD Y, 2002, J FINANC MARK, V5, P31, DOI 10.1016/S1386-4181(01)00024-6      171
MYERS SC, 1984, J FINANC ECON, V13, P187, DOI 10.1016/0304-405X(84)90023-0     167
BLACK F, 1973, J POLIT ECON, V81, P637, DOI 10.1086/260062                     151
LA PORTA R, 1998, J POLIT ECON, V106, P1113, DOI 10.1086/250042                142
KYLE AS, 1985, ECONOMETRICA, V53, P1315, DOI 10.2307/1913210                   140
JEGADEESH N, 1993, J FINANC, V48, P65, DOI 10.1111/J.1540-6261.1993.TB04702.X  138
MYERS SC, 1977, J FINANC ECON, V5, P147, DOI 10.1016/0304-405X(77)90015-0      137
GOMPERS P, 2003, Q J ECON, V118, P107, DOI 10.1162/00335530360535162           133
FAMA EF, 1997, J FINANC ECON, V43, P153, DOI 10.1016/S0304-405X(96)00896-3     124
MERTON RC, 1973, ECONOMETRICA, V41, P867, DOI 10.2307/1913811                  123
PASTOR L, 2003, J POLIT ECON, V111, P642, DOI 10.1086/374184                   117
PETERSEN MA, 2009, REV FINANC STUD, V22, P435, DOI 10.1093/RFS/HHN053          112

Section 2: The Intellectual Structure of the field - Co-citation Analysis

Citation analysis is one of the main classic techniques in bibliometrics. It shows the structure of a specific field through the linkages between nodes (e.g. authors, papers, journal), while the edges can be differently interpretated depending on the network type, that are namely co-citation, direct citation, bibliographic coupling. Please see Aria, Cuccurullo (2017).

Below there are three examples.

First, a co-citation network that shows relations between cited-reference works (nodes).

Second, a co-citation network that uses cited-journals as unit of analysis.

The useful dimensions to comment the co-citation networks are: (i) centrality and peripherality of nodes, (ii) their proximity and distance, (iii) strength of ties, (iv) clusters, (iiv) bridging contributions.

Third, a historiograph is built on direct citations. It draws the intellectual linkages in a historical order. Cited works of thousands of authors contained in a collection of published scientific articles is sufficient for recostructing the historiographic structure of the field, calling out the basic works in it.

Article (References) co-citation analysis

Plot options:

  • n = 50 (the funxtion plots the main 50 cited references)

  • type = “fruchterman” (the network layout is generated using the Fruchterman-Reingold Algorithm)

  • size.cex = TRUE (the size of the vertices is proportional to their degree)

  • size = 20 (the max size of vertices)

  • remove.multiple=FALSE (multiple edges are not removed)

  • labelsize = 1 (defines the size of vertex labels)

  • edgesize = 10 (The thickness of the edges is proportional to their strength. Edgesize defines the max value of the thickness)

  • edges.min = 5 (plots only edges with a strength greater than or equal to 5)

  • all other arguments assume the default values

NetMatrix <- biblioNetwork(M, analysis = "co-citation", network = "references", sep = ";")
net=networkPlot(NetMatrix, n = 50, Title = "Co-Citation Network", type = "fruchterman", size.cex=TRUE, size=20, remove.multiple=FALSE, labelsize=1,edgesize = 10, edges.min=5)

Descriptive analysis of Article co-citation network characteristics

summary(netstat,k=10)


Main statistics about the network

 Size                                  532 
 Density                               0.005 
 Transitivity                          0.297 
 Diameter                              12 
 Degree Centralization                 0.069 
 Average path length                   4.565 
 

Journal (Source) co-citation analysis

M=metaTagExtraction(M,"CR_SO",sep=";")
NetMatrix <- biblioNetwork(M, analysis = "co-citation", network = "sources", sep = ";")
net=networkPlot(NetMatrix, n = 50, Title = "Co-Citation Network", type = "auto", size.cex=TRUE, size=15, remove.multiple=FALSE, labelsize=1,edgesize = 10, edges.min=5)

Descriptive analysis of Journal co-citation network characteristics

netstat <- networkStat(NetMatrix)
NA

Section 3: Historiograph - Direct citation linkages

histResults <- histNetwork(M, sep = ";")

WOS DB:
Searching local citations (LCS) by reference items (SR) and DOIs...

Analyzing 134021 reference items...

Found 2418 documents with no empty Local Citations (LCS)
options(width = 130)
net <- histPlot(histResults, n=20, size = 5, labelsize = 4)

 Legend

Section 4: The conceptual structure - Co-Word Analysis

Co-word networks show the conceptual structure, that uncovers links between concepts through term co-occurences.

Conceptual structure is often used to understand the topics covered by scholars (so-called research front) and identify what are the most important and the most recent issues.

Dividing the whole timespan in different timeslices and comparing the conceptual structures is useful to analyze the evolution of topics over time.

Bibliometrix is able to analyze keywords, but also the terms in the articles’ titles and abstracts. It does it using network analysis or correspondance analysis (CA) or multiple correspondance analysis (MCA). CA and MCA visualise the conceptual structure in a two-dimensional plot.

Co-word Analysis through Keyword co-occurrences

Plot options:

  • normalize = “association” (the vertex similarities are normalized using association strength)

  • n = 50 (the function plots the main 50 cited references)

  • type = “fruchterman” (the network layout is generated using the Fruchterman-Reingold Algorithm)

  • size.cex = TRUE (the size of the vertices is proportional to their degree)

  • size = 20 (the max size of the vertices)

  • remove.multiple=FALSE (multiple edges are not removed)

  • labelsize = 3 (defines the max size of vertex labels)

  • label.cex = TRUE (The vertex label sizes are proportional to their degree)

  • edgesize = 10 (The thickness of the edges is proportional to their strength. Edgesize defines the max value of the thickness)

  • label.n = 30 (Labels are plotted only for the main 30 vertices)

  • edges.min = 25 (plots only edges with a strength greater than or equal to 2)

  • all other arguments assume the default values

NetMatrix <- biblioNetwork(M, analysis = "co-occurrences", network = "keywords", sep = ";")
net=networkPlot(NetMatrix, normalize="association", n = 50, Title = "Keyword Co-occurrences", type = "fruchterman", size.cex=TRUE, size=20, remove.multiple=F, edgesize = 10, labelsize=5,label.cex=TRUE,label.n=30,edges.min=2)

Descriptive analysis of keyword co-occurrences network characteristics

netstat <- networkStat(NetMatrix)
summary(netstat,k=10)


Main statistics about the network

 Size                                  2758 
 Density                               0.012 
 Transitivity                          0.158 
 Diameter                              5 
 Degree Centralization                 0.335 
 Average path length                   2.466 
 

Co-word Analysis through Correspondence Analysis

suppressWarnings(
CS <- conceptualStructure(M, method="MCA", field="ID", minDegree=15, clust=5, stemming=FALSE, labelsize=15,documents=20)
)

Section 5: Thematic Map

Co-word analysis draws clusters of keywords. They are considered as themes, whose density and centrality can be used in classifying themes and mapping in a two-dimensional diagram.

Thematic map is a very intuitive plot and we can analyze themes according to the quadrant in which they are placed: (1) upper-right quadrant: motor-themes; (2) lower-right quadrant: basic themes; (3) lower-left quadrant: emerging or disappearing themes; (4) upper-left quadrant: very specialized/niche themes.

Please see:

Aria, M., Cuccurullo, C., D’Aniello, L., Misuraca, M., & Spano, M. (2022). Thematic Analysis as a New Culturomic Tool: The Social Media Coverage on COVID-19 Pandemic in Italy. Sustainability, 14(6), 3643, (https://doi.org/10.3390/su14063643).

Aria M., Misuraca M., Spano M. (2020) Mapping the evolution of social research and data science on 30 years of Social Indicators Research, Social Indicators Research. (DOI: )https://doi.org/10.1007/s11205-020-02281-3)

Cobo, M. J., Lopez-Herrera, A. G., Herrera-Viedma, E., & Herrera, F. (2011). An approach for detecting, quantifying, and visualizing the evolution of a research field: A practical application to the fuzzy sets theory field. Journal of Informetrics, 5(1), 146-166.


Map=thematicMap(M, field = "ID", n = 250, minfreq = 4,
  stemming = FALSE, size = 0.7, n.labels=5, repel = TRUE)
plot(Map$map)

Cluster description

Clusters=Map$words[order(Map$words$Cluster,-Map$words$Occurrences),]
library(dplyr)
CL <- Clusters %>% group_by(.data$Cluster_Label) %>% top_n(5, .data$Occurrences)
CL

Section 6: The social structure - Collaboration Analysis

Collaboration networks show how authors, institutions (e.g. universities or departments) and countries relate to others in a specific field of research. For example, the first figure below is a co-author network. It discovers regular study groups, hidden groups of scholars, and pivotal authors. The second figure is called “Edu collaboration network” and uncovers relevant institutions in a specific research field and their relations.

Author collaboration network

NetMatrix <- biblioNetwork(M, analysis = "collaboration",  network = "authors", sep = ";")
net=networkPlot(NetMatrix,  n = 50, Title = "Author collaboration",type = "auto", size=10,size.cex=T,edgesize = 3,labelsize=1)

Descriptive analysis of author collaboration network characteristics

netstat <- networkStat(NetMatrix)
summary(netstat,k=15)


Main statistics about the network

 Size                                  3804 
 Density                               0.001 
 Transitivity                          0.308 
 Diameter                              19 
 Degree Centralization                 0.011 
 Average path length                   7.745 
 

Edu collaboration network

NetMatrix <- biblioNetwork(M, analysis = "collaboration",  network = "universities", sep = ";")
net=networkPlot(NetMatrix,  n = 50, Title = "Edu collaboration",type = "auto", size=4,size.cex=F,edgesize = 3,labelsize=1)

Descriptive analysis of edu collaboration network characteristics

netstat <- networkStat(NetMatrix)
summary(netstat,k=15)


Main statistics about the network

 Size                                  969 
 Density                               0.008 
 Transitivity                          0.191 
 Diameter                              8 
 Degree Centralization                 0.141 
 Average path length                   3.134 
 

Country collaboration network

M <- metaTagExtraction(M, Field = "AU_CO", sep = ";")
NetMatrix <- biblioNetwork(M, analysis = "collaboration",  network = "countries", sep = ";")
net=networkPlot(NetMatrix,  n = dim(NetMatrix)[1], Title = "Country collaboration",type = "circle", size=10,size.cex=T,edgesize = 1,labelsize=0.6, cluster="none")

Descriptive analysis of country collaboration network characteristics

LS0tCnRpdGxlOiAiSkZFIGFuYWx5c2lzIgphdXRob3I6IApkYXRlOiBKdW5lLCAzIDIwMjIKb3V0cHV0OgogIGh0bWxfZG9jdW1lbnQ6CiAgICB0b2M6IHllcwogIGh0bWxfbm90ZWJvb2s6CiAgICB0aGVtZTogbHVtZW4KICAgIHRvYzogeWVzCiAgcHJldHR5ZG9jOjpodG1sX3ByZXR0eToKICAgIHRoZW1lOiBocHN0cgogICAgaGlnaGxpZ2h0OiBnaXRodWIKLS0tCgpgYGB7ciBpbmNsdWRlPUZBTFNFfQojIEluc3RhbGxhdGlvbiBvZiBzb21lIHVzZWZ1bCBwYWNrYWdlcwppZighaXNUUlVFKHJlcXVpcmUoInByZXR0eWRvYyIpKSl7aW5zdGFsbC5wYWNrYWdlcygicHJldHR5ZG9jIil9CmlmKCFpc1RSVUUocmVxdWlyZSgicmlvIikpKXtpbnN0YWxsLnBhY2thZ2VzKCJyaW8iKX0KbGlicmFyeShwcmV0dHlkb2MpCmxpYnJhcnkocmlvKQpgYGAKCgojIEJpYmxpb2dyYXBoaWMgQ29sbGVjdGlvbgoKKipEYXRhIHNvdXJjZSoqOiAgIENsYXJpdmF0ZSBBbmFseXRpY3MgV2ViIG9mIFNjaWVuY2UgKGh0dHA6Ly9hcHBzLndlYm9ma25vd2xlZGdlLmNvbSkKCioqRGF0YSBmb3JtYXQqKjogICBQbGFpbnRleHQKCioqUXVlcnkqKjogICAgICAgICBTTyA9ICJKb3VybmFsIG9mIEluZm9ybWV0cmljcyIKCioqVGltZXNwYW4qKjogICAgICAyMDA3LTIwMTcKCioqRG9jdW1lbnQgVHlwZSoqOiBBcnRpY2xlcywgbGV0dGVycywgcmV2aWV3IGFuZCBwcm9jZWVkaW5ncyBwYXBlcnMKCioqUXVlcnkgZGF0YSoqOiAgICBNYXksIDIwMTgKCgojIEluc3RhbGwgYW5kIGxvYWQgYmlibGlvbWV0cml4IFItcGFja2FnZQpgYGB7ciBsb2FkIGJpYmxpb21ldHJpeH0KIyBTdGFibGUgdmVyc2lvbiBmcm9tIENSQU4gKENvbXByZWhlbnNpdmUgUiBBcmNoaXZlIE5ldHdvcmspCiMgaWYgeW91IG5lZWQgdG8gZXhlY3V0ZSB0aGUgY29kZSwgcmVtb3ZlICMgZnJvbSB0aGUgYmVnaW5uaW5nIG9mIHRoZSBuZXh0IGxpbmUKCiMgaW5zdGFsbC5wYWNrYWdlcygiYmlibGlvbWV0cml4IikKCgojIE1vc3QgdXBkYXRlZCB2ZXJzaW9uIGZyb20gR2l0SHViCiMgaWYgeW91IG5lZWQgdG8gZXhlY3V0ZSB0aGUgY29kZSwgcmVtb3ZlICMgZnJvbSB0aGUgYmVnaW5uaW5nIG9mIHRoZSBuZXh0IGxpbmVzCgojIGluc3RhbGwucGFja2FnZXMoImRldnRvb2xzIikKIyBkZXZ0b29sczo6aW5zdGFsbF9naXRodWIoIm1hc3NpbW9hcmlhL2JpYmxpb21ldHJpeCIpCgpsaWJyYXJ5KGJpYmxpb21ldHJpeCkKYGBgCgoKIyBEYXRhIExvYWRpbmcgYW5kIENvbnZlcnRpbmcKYGBge3IgRGF0YSBsb2FkaW5nLCB3YXJuaW5nPUZBTFNFfQoKbXlmaWxlIDwtICgiamZlX3RvX2JpYmxpb21ldHJpeC50eHQiKQoKIyBDb252ZXJ0aW5nIHRoZSBsb2FkZWQgZmlsZXMgaW50byBhIFIgYmlibGlvZ3JhcGhpYyBkYXRhZnJhbWUKTSA8LSBjb252ZXJ0MmRmKGZpbGU9bXlmaWxlLCBkYnNvdXJjZT0id29zIixmb3JtYXQ9InBsYWludGV4dCIpCmBgYAoKIyBTZWN0aW9uIDE6IERlc2NyaXB0aXZlIEFuYWx5c2lzCgpEZXNjcmlwdGl2ZSBhbmFseXNpcyBwcm92aWRlcyBzb21lIHNuYXBzaG90cyBhYm91dCB0aGUgYW5udWFsIHJlc2VhcmNoIGRldmVsb3BtZW50LCB0aGUgdG9wICJrIiBwcm9kdWN0aXZlIGF1dGhvcnMsIHBhcGVycywgY291bnRyaWVzIGFuZCBtb3N0IHJlbGV2YW50IGtleXdvcmRzLgoKCiMjIE1haW4gZmluZGluZ3MgYWJvdXQgdGhlIGNvbGxlY3Rpb24KCmBgYHtyIERlc2NyaXB0aXZlIEFuYWx5c2lzLCBlY2hvPVRSVUUsIGNvbW1lbnQ9TkF9CiNvcHRpb25zKHdpZHRoPTE2MCkKcmVzdWx0cyA8LSBiaWJsaW9BbmFseXNpcyhNKQpzdW1tYXJ5KHJlc3VsdHMsIGs9MTAsIHBhdXNlPUYsIHdpZHRoPTEzMCkgICMgVE9ETzog6L+H5ruk5bm05Lu9IDE5ODAgLSAyMDE5CnBsb3QoeD1yZXN1bHRzLCBrPTEwLCBwYXVzZT1GKQojIFRPRE86IOmHjeeCueWFs+azqOS4i+S4uuS7gOS5iCBhdmVyYWdlIHRvdGFsIGNpdGF0aW9ucyBwZXIgeWVhciDmgKXliafkuIvpmY0KYGBgCgojIyBNb3N0IENpdGVkIFJlZmVyZW5jZXMKCmBgYHtyIE1vc3QgY2l0ZWQgcmVmZXJlbmNlcywgIGNvbW1lbnQ9TkF9CkNSIDwtIGNpdGF0aW9ucyhNLCBmaWVsZCA9ICJhcnRpY2xlIiwgc2VwID0gIjsiKQpjYmluZChDUiRDaXRlZFsxOjIwXSkKYGBgCgoKIyBTZWN0aW9uIDI6IFRoZSBJbnRlbGxlY3R1YWwgU3RydWN0dXJlIG9mIHRoZSBmaWVsZCAtIENvLWNpdGF0aW9uIEFuYWx5c2lzCgpDaXRhdGlvbiBhbmFseXNpcyBpcyBvbmUgb2YgdGhlIG1haW4gY2xhc3NpYyB0ZWNobmlxdWVzIGluIGJpYmxpb21ldHJpY3MuIEl0IHNob3dzIHRoZSBzdHJ1Y3R1cmUgb2YgYSBzcGVjaWZpYyBmaWVsZCB0aHJvdWdoIHRoZSBsaW5rYWdlcyBiZXR3ZWVuIG5vZGVzIChlLmcuIGF1dGhvcnMsIHBhcGVycywgam91cm5hbCksIHdoaWxlIHRoZSBlZGdlcyBjYW4gYmUgZGlmZmVyZW50bHkgaW50ZXJwcmV0YXRlZCBkZXBlbmRpbmcgb24gdGhlIG5ldHdvcmsgdHlwZSwgdGhhdCBhcmUgbmFtZWx5IGNvLWNpdGF0aW9uLCBkaXJlY3QgY2l0YXRpb24sIGJpYmxpb2dyYXBoaWMgY291cGxpbmcuIFBsZWFzZSBzZWUgQXJpYSwgQ3VjY3VydWxsbyAoMjAxNykuCgpCZWxvdyB0aGVyZSBhcmUgdGhyZWUgZXhhbXBsZXMuCgpGaXJzdCwgYSBjby1jaXRhdGlvbiBuZXR3b3JrIHRoYXQgc2hvd3MgcmVsYXRpb25zIGJldHdlZW4gY2l0ZWQtcmVmZXJlbmNlIHdvcmtzIChub2RlcykuCgpTZWNvbmQsIGEgY28tY2l0YXRpb24gbmV0d29yayB0aGF0IHVzZXMgY2l0ZWQtam91cm5hbHMgYXMgdW5pdCBvZiBhbmFseXNpcy4KClRoZSB1c2VmdWwgZGltZW5zaW9ucyB0byBjb21tZW50IHRoZSBjby1jaXRhdGlvbiBuZXR3b3JrcyBhcmU6IChpKSBjZW50cmFsaXR5IGFuZCBwZXJpcGhlcmFsaXR5IG9mIG5vZGVzLCAoaWkpIHRoZWlyIHByb3hpbWl0eSBhbmQgZGlzdGFuY2UsIChpaWkpIHN0cmVuZ3RoIG9mIHRpZXMsIChpdikgY2x1c3RlcnMsIChpaXYpIGJyaWRnaW5nIGNvbnRyaWJ1dGlvbnMuCgpUaGlyZCwgYSBoaXN0b3Jpb2dyYXBoIGlzIGJ1aWx0IG9uIGRpcmVjdCBjaXRhdGlvbnMuIEl0IGRyYXdzIHRoZSBpbnRlbGxlY3R1YWwgbGlua2FnZXMgaW4gYSBoaXN0b3JpY2FsIG9yZGVyLiBDaXRlZCB3b3JrcyBvZgp0aG91c2FuZHMgb2YgYXV0aG9ycyBjb250YWluZWQgaW4gYSBjb2xsZWN0aW9uIG9mIHB1Ymxpc2hlZCBzY2llbnRpZmljIGFydGljbGVzIGlzIHN1ZmZpY2llbnQgZm9yIHJlY29zdHJ1Y3RpbmcgdGhlIGhpc3RvcmlvZ3JhcGhpYyBzdHJ1Y3R1cmUgb2YgdGhlIGZpZWxkLCBjYWxsaW5nIG91dCB0aGUgYmFzaWMgd29ya3MgaW4gaXQuCgoKIyMgQXJ0aWNsZSAoUmVmZXJlbmNlcykgY28tY2l0YXRpb24gYW5hbHlzaXMKKipQbG90IG9wdGlvbnMqKjoKCiogbiA9IDUwICh0aGUgZnVueHRpb24gcGxvdHMgdGhlIG1haW4gNTAgY2l0ZWQgcmVmZXJlbmNlcykKCiogdHlwZSA9ICJmcnVjaHRlcm1hbiIgKHRoZSBuZXR3b3JrIGxheW91dCBpcyBnZW5lcmF0ZWQgdXNpbmcgdGhlIEZydWNodGVybWFuLVJlaW5nb2xkIEFsZ29yaXRobSkKCiogc2l6ZS5jZXggPSBUUlVFICh0aGUgc2l6ZSBvZiB0aGUgdmVydGljZXMgaXMgcHJvcG9ydGlvbmFsIHRvIHRoZWlyIGRlZ3JlZSkKCiogc2l6ZSA9IDIwICh0aGUgbWF4IHNpemUgb2YgdmVydGljZXMpCgoqIHJlbW92ZS5tdWx0aXBsZT1GQUxTRSAobXVsdGlwbGUgZWRnZXMgYXJlIG5vdCByZW1vdmVkKQoKKiBsYWJlbHNpemUgPSAxIChkZWZpbmVzIHRoZSBzaXplIG9mIHZlcnRleCBsYWJlbHMpCgoqIGVkZ2VzaXplID0gMTAgKFRoZSB0aGlja25lc3Mgb2YgdGhlIGVkZ2VzIGlzIHByb3BvcnRpb25hbCB0byB0aGVpciBzdHJlbmd0aC4gRWRnZXNpemUgZGVmaW5lcyB0aGUgbWF4IHZhbHVlIG9mIHRoZSB0aGlja25lc3MpCgoqIGVkZ2VzLm1pbiA9IDUgKHBsb3RzIG9ubHkgZWRnZXMgd2l0aCBhIHN0cmVuZ3RoIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byA1KQoKKiBhbGwgb3RoZXIgYXJndW1lbnRzIGFzc3VtZSB0aGUgZGVmYXVsdCB2YWx1ZXMKCmBgYHtyIENvLWNpdGF0aW9uIG5ldHdvcmssIGNvbW1lbnQ9TkEsIGZpZy5oZWlnaHQ9MTAsIGZpZy53aWR0aD0xMH0KTmV0TWF0cml4IDwtIGJpYmxpb05ldHdvcmsoTSwgYW5hbHlzaXMgPSAiY28tY2l0YXRpb24iLCBuZXR3b3JrID0gInJlZmVyZW5jZXMiLCBzZXAgPSAiOyIpCm5ldD1uZXR3b3JrUGxvdChOZXRNYXRyaXgsIG4gPSA1MCwgVGl0bGUgPSAiQ28tQ2l0YXRpb24gTmV0d29yayIsIHR5cGUgPSAiZnJ1Y2h0ZXJtYW4iLCBzaXplLmNleD1UUlVFLCBzaXplPTIwLCByZW1vdmUubXVsdGlwbGU9RkFMU0UsIGxhYmVsc2l6ZT0xLGVkZ2VzaXplID0gMTAsIGVkZ2VzLm1pbj01KQpgYGAKCkRlc2NyaXB0aXZlIGFuYWx5c2lzIG9mIEFydGljbGUgY28tY2l0YXRpb24gbmV0d29yayBjaGFyYWN0ZXJpc3RpY3MKYGBge3IgQ28tY2l0YXRpb24gbmV0IHN0YXQsIGNvbW1lbnQ9TkF9Cm5ldHN0YXQgPC0gbmV0d29ya1N0YXQoTmV0TWF0cml4KQpzdW1tYXJ5KG5ldHN0YXQsaz0xMCkKYGBgCgoKIyMgSm91cm5hbCAoU291cmNlKSBjby1jaXRhdGlvbiBhbmFseXNpcwoKYGBge3IgQ28tY2l0YXRpb24gc291cmNlIG5ldHdvcmssIGNvbW1lbnQ9TkEsIGZpZy5oZWlnaHQ9MTAsIGZpZy53aWR0aD0xMH0KTT1tZXRhVGFnRXh0cmFjdGlvbihNLCJDUl9TTyIsc2VwPSI7IikKTmV0TWF0cml4IDwtIGJpYmxpb05ldHdvcmsoTSwgYW5hbHlzaXMgPSAiY28tY2l0YXRpb24iLCBuZXR3b3JrID0gInNvdXJjZXMiLCBzZXAgPSAiOyIpCm5ldD1uZXR3b3JrUGxvdChOZXRNYXRyaXgsIG4gPSA1MCwgVGl0bGUgPSAiQ28tQ2l0YXRpb24gTmV0d29yayIsIHR5cGUgPSAiYXV0byIsIHNpemUuY2V4PVRSVUUsIHNpemU9MTUsIHJlbW92ZS5tdWx0aXBsZT1GQUxTRSwgbGFiZWxzaXplPTEsZWRnZXNpemUgPSAxMCwgZWRnZXMubWluPTUpCmBgYAoKRGVzY3JpcHRpdmUgYW5hbHlzaXMgb2YgSm91cm5hbCBjby1jaXRhdGlvbiBuZXR3b3JrIGNoYXJhY3RlcmlzdGljcwpgYGB7ciBTbyBDby1jaXRhdGlvbiBuZXQgc3RhdCwgY29tbWVudD1OQX0KbmV0c3RhdCA8LSBuZXR3b3JrU3RhdChOZXRNYXRyaXgpCnN1bW1hcnkobmV0c3RhdCxrPTEwKQpgYGAKCgojIFNlY3Rpb24gMzogSGlzdG9yaW9ncmFwaCAtIERpcmVjdCBjaXRhdGlvbiBsaW5rYWdlcwoKCmBgYHtyIERpcmVjdCBjaXRhdGlvbiBuZXR3b3JrLCBmaWcuaGVpZ2h0PTEwLCBmaWcud2lkdGg9MTB9Cmhpc3RSZXN1bHRzIDwtIGhpc3ROZXR3b3JrKE0sIHNlcCA9ICI7IikKCmBgYAoKYGBge3IgSGlzdG9yaW9ncmFwaCwgY29tbWVudD1OQSwgZmlnLmhlaWdodD03LGZpZy53aWR0aD0xMH0Kb3B0aW9ucyh3aWR0aCA9IDEzMCkKbmV0IDwtIGhpc3RQbG90KGhpc3RSZXN1bHRzLCBuPTIwLCBzaXplID0gNSwgbGFiZWxzaXplID0gNCkKYGBgCgoKIyBTZWN0aW9uIDQ6IFRoZSBjb25jZXB0dWFsIHN0cnVjdHVyZSAtIENvLVdvcmQgQW5hbHlzaXMKCkNvLXdvcmQgbmV0d29ya3Mgc2hvdyB0aGUgY29uY2VwdHVhbCBzdHJ1Y3R1cmUsIHRoYXQgdW5jb3ZlcnMgbGlua3MgYmV0d2VlbiBjb25jZXB0cyB0aHJvdWdoIHRlcm0gY28tb2NjdXJlbmNlcy4KCkNvbmNlcHR1YWwgc3RydWN0dXJlIGlzIG9mdGVuIHVzZWQgdG8gdW5kZXJzdGFuZCB0aGUgdG9waWNzIGNvdmVyZWQgYnkgc2Nob2xhcnMgKHNvLWNhbGxlZCByZXNlYXJjaCBmcm9udCkgYW5kIGlkZW50aWZ5IHdoYXQgYXJlIHRoZSBtb3N0IGltcG9ydGFudCBhbmQgdGhlIG1vc3QgcmVjZW50IGlzc3Vlcy4KCkRpdmlkaW5nIHRoZSB3aG9sZSB0aW1lc3BhbiBpbiBkaWZmZXJlbnQgdGltZXNsaWNlcyBhbmQgY29tcGFyaW5nIHRoZSBjb25jZXB0dWFsIHN0cnVjdHVyZXMgaXMgdXNlZnVsIHRvIGFuYWx5emUgdGhlIGV2b2x1dGlvbiBvZiB0b3BpY3Mgb3ZlciB0aW1lLgoKQmlibGlvbWV0cml4IGlzIGFibGUgdG8gYW5hbHl6ZSBrZXl3b3JkcywgYnV0IGFsc28gdGhlIHRlcm1zIGluIHRoZSBhcnRpY2xlcycgdGl0bGVzIGFuZCBhYnN0cmFjdHMuIEl0IGRvZXMgaXQgdXNpbmcgbmV0d29yayBhbmFseXNpcyBvciBjb3JyZXNwb25kYW5jZSBhbmFseXNpcyAoQ0EpIG9yIG11bHRpcGxlIGNvcnJlc3BvbmRhbmNlIGFuYWx5c2lzIChNQ0EpLiBDQSBhbmQgTUNBIHZpc3VhbGlzZSB0aGUgY29uY2VwdHVhbCBzdHJ1Y3R1cmUgaW4gYSB0d28tZGltZW5zaW9uYWwgcGxvdC4KIAoKIyMgQ28td29yZCBBbmFseXNpcyB0aHJvdWdoIEtleXdvcmQgY28tb2NjdXJyZW5jZXMKCioqUGxvdCBvcHRpb25zKio6CgoqIG5vcm1hbGl6ZSA9ICJhc3NvY2lhdGlvbiIgKHRoZSB2ZXJ0ZXggc2ltaWxhcml0aWVzIGFyZSBub3JtYWxpemVkIHVzaW5nIGFzc29jaWF0aW9uIHN0cmVuZ3RoKQoKKiBuID0gNTAgKHRoZSBmdW5jdGlvbiBwbG90cyB0aGUgbWFpbiA1MCBjaXRlZCByZWZlcmVuY2VzKQoKKiB0eXBlID0gImZydWNodGVybWFuIiAodGhlIG5ldHdvcmsgbGF5b3V0IGlzIGdlbmVyYXRlZCB1c2luZyB0aGUgRnJ1Y2h0ZXJtYW4tUmVpbmdvbGQgQWxnb3JpdGhtKQoKKiBzaXplLmNleCA9IFRSVUUgKHRoZSBzaXplIG9mIHRoZSB2ZXJ0aWNlcyBpcyBwcm9wb3J0aW9uYWwgdG8gdGhlaXIgZGVncmVlKQoKKiBzaXplID0gMjAgKHRoZSBtYXggc2l6ZSBvZiB0aGUgdmVydGljZXMpIAoKKiByZW1vdmUubXVsdGlwbGU9RkFMU0UgKG11bHRpcGxlIGVkZ2VzIGFyZSBub3QgcmVtb3ZlZCkKCiogbGFiZWxzaXplID0gMyAoZGVmaW5lcyB0aGUgbWF4IHNpemUgb2YgdmVydGV4IGxhYmVscykKCiogbGFiZWwuY2V4ID0gVFJVRSAoVGhlIHZlcnRleCBsYWJlbCBzaXplcyBhcmUgcHJvcG9ydGlvbmFsIHRvIHRoZWlyIGRlZ3JlZSkKCiogZWRnZXNpemUgPSAxMCAoVGhlIHRoaWNrbmVzcyBvZiB0aGUgZWRnZXMgaXMgcHJvcG9ydGlvbmFsIHRvIHRoZWlyIHN0cmVuZ3RoLiBFZGdlc2l6ZSBkZWZpbmVzIHRoZSBtYXggdmFsdWUgb2YgdGhlIHRoaWNrbmVzcykKCiogbGFiZWwubiA9IDMwIChMYWJlbHMgYXJlIHBsb3R0ZWQgb25seSBmb3IgdGhlIG1haW4gMzAgdmVydGljZXMpCgoqIGVkZ2VzLm1pbiA9IDI1IChwbG90cyBvbmx5IGVkZ2VzIHdpdGggYSBzdHJlbmd0aCBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gMikKCiogYWxsIG90aGVyIGFyZ3VtZW50cyBhc3N1bWUgdGhlIGRlZmF1bHQgdmFsdWVzCgpgYGB7ciBLZXl3b3JkIGNvLW9jY3VycmVuY2VzLCBjb21tZW50PU5BLCBmaWcuaGVpZ2h0PTEwLCBmaWcud2lkdGg9MTB9Ck5ldE1hdHJpeCA8LSBiaWJsaW9OZXR3b3JrKE0sIGFuYWx5c2lzID0gImNvLW9jY3VycmVuY2VzIiwgbmV0d29yayA9ICJrZXl3b3JkcyIsIHNlcCA9ICI7IikKbmV0PW5ldHdvcmtQbG90KE5ldE1hdHJpeCwgbm9ybWFsaXplPSJhc3NvY2lhdGlvbiIsIG4gPSA1MCwgVGl0bGUgPSAiS2V5d29yZCBDby1vY2N1cnJlbmNlcyIsIHR5cGUgPSAiZnJ1Y2h0ZXJtYW4iLCBzaXplLmNleD1UUlVFLCBzaXplPTIwLCByZW1vdmUubXVsdGlwbGU9RiwgZWRnZXNpemUgPSAxMCwgbGFiZWxzaXplPTUsbGFiZWwuY2V4PVRSVUUsbGFiZWwubj0zMCxlZGdlcy5taW49MikKYGBgCgpEZXNjcmlwdGl2ZSBhbmFseXNpcyBvZiBrZXl3b3JkIGNvLW9jY3VycmVuY2VzIG5ldHdvcmsgY2hhcmFjdGVyaXN0aWNzCgpgYGB7ciBLZXl3b3JkIG5ldCBzdGF0LCBjb21tZW50PU5BfQpuZXRzdGF0IDwtIG5ldHdvcmtTdGF0KE5ldE1hdHJpeCkKc3VtbWFyeShuZXRzdGF0LGs9MTApCmBgYAoKCiMjIENvLXdvcmQgQW5hbHlzaXMgdGhyb3VnaCBDb3JyZXNwb25kZW5jZSBBbmFseXNpcwoKYGBge3IgQ28td29yZCBBbmFseXNpcywgZmlnLmhlaWdodD0xMCwgZmlnLndpZHRoPTEwfQpzdXBwcmVzc1dhcm5pbmdzKApDUyA8LSBjb25jZXB0dWFsU3RydWN0dXJlKE0sIG1ldGhvZD0iTUNBIiwgZmllbGQ9IklEIiwgbWluRGVncmVlPTE1LCBjbHVzdD01LCBzdGVtbWluZz1GQUxTRSwgbGFiZWxzaXplPTE1LGRvY3VtZW50cz0yMCkKKQpgYGAKCgoKIyBTZWN0aW9uIDU6IFRoZW1hdGljIE1hcAoKQ28td29yZCBhbmFseXNpcyBkcmF3cyBjbHVzdGVycyBvZiBrZXl3b3Jkcy4gVGhleSBhcmUgY29uc2lkZXJlZCBhcyB0aGVtZXMsIHdob3NlIGRlbnNpdHkgYW5kIGNlbnRyYWxpdHkgY2FuIGJlIHVzZWQgaW4gY2xhc3NpZnlpbmcgdGhlbWVzIGFuZCBtYXBwaW5nIGluIGEgdHdvLWRpbWVuc2lvbmFsIGRpYWdyYW0uCgpUaGVtYXRpYyBtYXAgaXMgYSB2ZXJ5IGludHVpdGl2ZSBwbG90IGFuZCB3ZSBjYW4gYW5hbHl6ZSB0aGVtZXMgYWNjb3JkaW5nIHRvIHRoZSBxdWFkcmFudCBpbiB3aGljaCB0aGV5IGFyZSBwbGFjZWQ6ICgxKSB1cHBlci1yaWdodCBxdWFkcmFudDogbW90b3ItdGhlbWVzOyAoMikgbG93ZXItcmlnaHQgcXVhZHJhbnQ6IGJhc2ljIHRoZW1lczsgKDMpIGxvd2VyLWxlZnQgcXVhZHJhbnQ6IGVtZXJnaW5nIG9yIGRpc2FwcGVhcmluZyB0aGVtZXM7ICg0KSB1cHBlci1sZWZ0IHF1YWRyYW50OiB2ZXJ5IHNwZWNpYWxpemVkL25pY2hlIHRoZW1lcy4KClBsZWFzZSBzZWU6IAoKQXJpYSwgTS4sIEN1Y2N1cnVsbG8sIEMuLCBE4oCZQW5pZWxsbywgTC4sIE1pc3VyYWNhLCBNLiwgJiBTcGFubywgTS4gKDIwMjIpLiAqKlRoZW1hdGljIEFuYWx5c2lzIGFzIGEgTmV3IEN1bHR1cm9taWMgVG9vbDogVGhlIFNvY2lhbCBNZWRpYSBDb3ZlcmFnZSBvbiBDT1ZJRC0xOSBQYW5kZW1pYyBpbiBJdGFseSoqLiAqU3VzdGFpbmFiaWxpdHkqLCAxNCg2KSwgMzY0MywgKGh0dHBzOi8vZG9pLm9yZy8xMC4zMzkwL3N1MTQwNjM2NDMpLgoKQXJpYSBNLiwgTWlzdXJhY2EgTS4sIFNwYW5vIE0uICgyMDIwKSAqKk1hcHBpbmcgdGhlIGV2b2x1dGlvbiBvZiBzb2NpYWwgcmVzZWFyY2ggYW5kIGRhdGEgc2NpZW5jZSBvbiAzMCB5ZWFycyBvZiBTb2NpYWwgSW5kaWNhdG9ycyBSZXNlYXJjaCoqLCAqU29jaWFsIEluZGljYXRvcnMgUmVzZWFyY2gqLiAKKERPSTogKWh0dHBzOi8vZG9pLm9yZy8xMC4xMDA3L3MxMTIwNS0wMjAtMDIyODEtMykKCkNvYm8sIE0uIEouLCBMb3Blei1IZXJyZXJhLCBBLiBHLiwgSGVycmVyYS1WaWVkbWEsIEUuLCAmIEhlcnJlcmEsIEYuICgyMDExKS4gKipBbiBhcHByb2FjaCBmb3IgZGV0ZWN0aW5nLCBxdWFudGlmeWluZywgYW5kIHZpc3VhbGl6aW5nIHRoZSBldm9sdXRpb24gb2YgYSByZXNlYXJjaCBmaWVsZDogQSBwcmFjdGljYWwgYXBwbGljYXRpb24gdG8gdGhlIGZ1enp5IHNldHMgdGhlb3J5IGZpZWxkKiouICpKb3VybmFsIG9mIEluZm9ybWV0cmljcyosIDUoMSksIDE0Ni0xNjYuCgoKYGBge3IgVGhlbWF0aWNNYXAsIGVjaG89VFJVRSwgZmlnLmhlaWdodD05LCBmaWcud2lkdGg9OX0KCk1hcD10aGVtYXRpY01hcChNLCBmaWVsZCA9ICJJRCIsIG4gPSAyNTAsIG1pbmZyZXEgPSA0LAogIHN0ZW1taW5nID0gRkFMU0UsIHNpemUgPSAwLjcsIG4ubGFiZWxzPTUsIHJlcGVsID0gVFJVRSkKcGxvdChNYXAkbWFwKQpgYGAKCgpDbHVzdGVyIGRlc2NyaXB0aW9uCmBgYHtyfQpDbHVzdGVycz1NYXAkd29yZHNbb3JkZXIoTWFwJHdvcmRzJENsdXN0ZXIsLU1hcCR3b3JkcyRPY2N1cnJlbmNlcyksXQpsaWJyYXJ5KGRwbHlyKQpDTCA8LSBDbHVzdGVycyAlPiUgZ3JvdXBfYnkoLmRhdGEkQ2x1c3Rlcl9MYWJlbCkgJT4lIHRvcF9uKDUsIC5kYXRhJE9jY3VycmVuY2VzKQpDTApgYGAKCgojIFNlY3Rpb24gNjogVGhlIHNvY2lhbCBzdHJ1Y3R1cmUgLSBDb2xsYWJvcmF0aW9uIEFuYWx5c2lzCgpDb2xsYWJvcmF0aW9uIG5ldHdvcmtzIHNob3cgaG93IGF1dGhvcnMsIGluc3RpdHV0aW9ucyAoZS5nLiB1bml2ZXJzaXRpZXMgb3IgZGVwYXJ0bWVudHMpIGFuZCBjb3VudHJpZXMgcmVsYXRlIHRvIG90aGVycyBpbiBhIHNwZWNpZmljIGZpZWxkIG9mIHJlc2VhcmNoLiBGb3IgZXhhbXBsZSwgdGhlIGZpcnN0IGZpZ3VyZSBiZWxvdyBpcyBhIGNvLWF1dGhvciBuZXR3b3JrLiBJdCBkaXNjb3ZlcnMgcmVndWxhciBzdHVkeSBncm91cHMsIGhpZGRlbiBncm91cHMgb2Ygc2Nob2xhcnMsIGFuZCBwaXZvdGFsIGF1dGhvcnMuIFRoZSBzZWNvbmQgZmlndXJlIGlzIGNhbGxlZCAiRWR1IGNvbGxhYm9yYXRpb24gbmV0d29yayIgYW5kIHVuY292ZXJzIHJlbGV2YW50IGluc3RpdHV0aW9ucyBpbiBhIHNwZWNpZmljIHJlc2VhcmNoIGZpZWxkIGFuZCB0aGVpciByZWxhdGlvbnMuCgojIyBBdXRob3IgY29sbGFib3JhdGlvbiBuZXR3b3JrCmBgYHtyLCBBdSBjb2xsYWJvcmF0aW9uIG5ldHdvcmssIGZpZy5oZWlnaHQ9MTAsIGZpZy53aWR0aD0xMH0KTmV0TWF0cml4IDwtIGJpYmxpb05ldHdvcmsoTSwgYW5hbHlzaXMgPSAiY29sbGFib3JhdGlvbiIsICBuZXR3b3JrID0gImF1dGhvcnMiLCBzZXAgPSAiOyIpCm5ldD1uZXR3b3JrUGxvdChOZXRNYXRyaXgsICBuID0gNTAsIFRpdGxlID0gIkF1dGhvciBjb2xsYWJvcmF0aW9uIix0eXBlID0gImF1dG8iLCBzaXplPTEwLHNpemUuY2V4PVQsZWRnZXNpemUgPSAzLGxhYmVsc2l6ZT0xKQpgYGAKCkRlc2NyaXB0aXZlIGFuYWx5c2lzIG9mIGF1dGhvciBjb2xsYWJvcmF0aW9uIG5ldHdvcmsgY2hhcmFjdGVyaXN0aWNzCgpgYGB7ciBBdSBjb2xsIHN0YXQsIGNvbW1lbnQ9TkF9Cm5ldHN0YXQgPC0gbmV0d29ya1N0YXQoTmV0TWF0cml4KQpzdW1tYXJ5KG5ldHN0YXQsaz0xNSkKYGBgCgoKIyMgRWR1IGNvbGxhYm9yYXRpb24gbmV0d29yawpgYGB7ciwgRWR1IGNvbGxhYm9yYXRpb24gbmV0d29yaywgZmlnLmhlaWdodD0xMCwgZmlnLndpZHRoPTEwfQpOZXRNYXRyaXggPC0gYmlibGlvTmV0d29yayhNLCBhbmFseXNpcyA9ICJjb2xsYWJvcmF0aW9uIiwgIG5ldHdvcmsgPSAidW5pdmVyc2l0aWVzIiwgc2VwID0gIjsiKQpuZXQ9bmV0d29ya1Bsb3QoTmV0TWF0cml4LCAgbiA9IDUwLCBUaXRsZSA9ICJFZHUgY29sbGFib3JhdGlvbiIsdHlwZSA9ICJhdXRvIiwgc2l6ZT00LHNpemUuY2V4PUYsZWRnZXNpemUgPSAzLGxhYmVsc2l6ZT0xKQpgYGAKCkRlc2NyaXB0aXZlIGFuYWx5c2lzIG9mIGVkdSBjb2xsYWJvcmF0aW9uIG5ldHdvcmsgY2hhcmFjdGVyaXN0aWNzCgpgYGB7ciBFZHUgY29sbCBzdGF0LCBjb21tZW50PU5BfQpuZXRzdGF0IDwtIG5ldHdvcmtTdGF0KE5ldE1hdHJpeCkKc3VtbWFyeShuZXRzdGF0LGs9MTUpCmBgYAoKCiMjIENvdW50cnkgY29sbGFib3JhdGlvbiBuZXR3b3JrCmBgYHtyLCBDbyBjb2xsYWJvcmF0aW9uIG5ldHdvcmssIGZpZy5oZWlnaHQ9MTAsIGZpZy53aWR0aD0xMH0KTSA8LSBtZXRhVGFnRXh0cmFjdGlvbihNLCBGaWVsZCA9ICJBVV9DTyIsIHNlcCA9ICI7IikKTmV0TWF0cml4IDwtIGJpYmxpb05ldHdvcmsoTSwgYW5hbHlzaXMgPSAiY29sbGFib3JhdGlvbiIsICBuZXR3b3JrID0gImNvdW50cmllcyIsIHNlcCA9ICI7IikKbmV0PW5ldHdvcmtQbG90KE5ldE1hdHJpeCwgIG4gPSBkaW0oTmV0TWF0cml4KVsxXSwgVGl0bGUgPSAiQ291bnRyeSBjb2xsYWJvcmF0aW9uIix0eXBlID0gImNpcmNsZSIsIHNpemU9MTAsc2l6ZS5jZXg9VCxlZGdlc2l6ZSA9IDEsbGFiZWxzaXplPTAuNiwgY2x1c3Rlcj0ibm9uZSIpCmBgYAoKRGVzY3JpcHRpdmUgYW5hbHlzaXMgb2YgY291bnRyeSBjb2xsYWJvcmF0aW9uIG5ldHdvcmsgY2hhcmFjdGVyaXN0aWNzCgpgYGB7ciBDbyBjb2xsIHN0YXQsIGNvbW1lbnQ9TkF9Cm5ldHN0YXQgPC0gbmV0d29ya1N0YXQoTmV0TWF0cml4KQpzdW1tYXJ5KG5ldHN0YXQsaz0xNSkKYGBgCgoKCgoKCgo=